/*
 * Copyright (c) 2014, Luciano Antonio Costa
 * Todos os direitos reservados.
 *
 * A redistribuição e uso na forma de código-fonte e binário, 
 * com ou sem modificações, são permitidas na medida em que as 
 * seguintes condições sejam cumpridas:
 *
 *   1) As redistribuições de código-fonte devem reter os 
 *      direitos de propriedade, a presente licença, esta lista 
 *      de condições e a seguinte resalva.
 *
 *   2) As redistribuições em forma binária devem reproduzir a 
 *      presente licença, esta lista de condições e a seguinte 
 *      resalva na documentação e/ou outros materiais fornecidos 
 *      com a distribuição.
 *
 *   3) Nem o nome de Luciano Antonio Costa, nem os nomes de seus  
 *      contribuidores podem ser usados para endossar ou promover 
 *      produtos derivados deste software, sem a prévia aprovação escrita.
 *
 * ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DOS DIREITOS DE PROPRIEDADE E 
 * CONTRIBUIDORES "COMO ESTÁ" E SEM QUALQUER GARANTIA EXPRESSA OU IMPLÍCITA, 
 * INCLUÍNDO, MAS NÃO LIMITANDO A, GARANTIAS IMPLÍCITAS DE MERCADO E ADEQUAÇÃO 
 * A QUALQUER USO PARTICULAR. DE NENHUMA FORMA OS REGENTES OU CONTRIBUIDORES 
 * DEVEM SER RESPONSABILIZADOS DE QUALQUER DANO DIRETO, INDIRETO, INCIDENTAL, 
 * ESPECIAL, EXEMPLAR OU CONSEQUÊNTE INCLUÍNDO MAS NÃO LIMITANDO À BUSCA E 
 * SUBSTITUIÇÃO DE BENS E SERVIÇOS; PERDAS DE DADOS, USOS OU LUCROS; OU INTERRUPÇÃO 
 * DE NEGÓCIOS) CAUSADOS E SOB QUALQUER TEORIA DE RESPONSABILIZAÇÃO, SEJA EM 
 * CONTRATO, RESPONSABILIZAÇÃO ESTRITA, OU INDIRETA (INCLUÍDA A NEGLIGÊNCIA OU 
 * SIMILAR), SURGIDA DE QUALQUER FORMA DESTE SOFTWARE, MESMO AINDA SE RESSALVADA 
 * A POSSIBILIDADE DO DANO. 
 */

package sc.senai.br.avaliacao;

/**
 * Opções disponíveis para uma jogada.
 * 
 * Baseado o jogo Pedra-Papel-Tesoura-Lagarto-Spock.
 * http://en.wikipedia.org/wiki/Rock-paper-scissors-lizard-Spock
 * 
 * @author Luciano Antonio Costa <luciano.antonio@sc.senai.br>
 * @version 1.0
 * @since 14/06/2014
 */
public enum Jogadas {
    
    PEDRA,
    PAPEL,
    TESOURA,
    LAGARTO,
    SPOCK;      
    
    /**
     * Dado um oponente, verifica quem ganha a disputa.
     * @param oponente jogada do oponente.
     * @return ganhou informação se ganhou ou perdeu a disputa.
     */
    public boolean disputa(Jogadas oponente) {
        if (this == oponente) 
            return true;
        switch (this) {
            case PEDRA:
                return (oponente == TESOURA || oponente == LAGARTO);
            case TESOURA:
                return (oponente == PAPEL || oponente == LAGARTO);
            case PAPEL:
                return (oponente == PEDRA || oponente == SPOCK);
            case LAGARTO:
                return (oponente == PAPEL || oponente == SPOCK);
            case SPOCK:
                return (oponente == PEDRA || oponente == TESOURA);
        }
        return false;
    }
    
}
